package com.eoner.baselib.presenter;

import android.content.Context;
import android.view.ViewGroup;

import com.eoner.baselib.enums.FCPageViewState;
import com.eoner.baselib.widget.empty.FCPageStateView;
/**
 * 文件名：IFCBaseView
 * 描 述：底层view的接口
 * 作 者：gyq
 * 时 间：2021-1-22
 */
public interface IFCBaseView {

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      获取相关
    //
    /////////////////////////////////////////////////////////////////////////////////
    /**
    * 获取页面上下文
    * */
    Context context();

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      loading相关
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
     * 显示页面loading
     * @param isCanTouchOutSide 是否点击背景消失
     * */
    void baseShowPageLoading(boolean isCanTouchOutSide);

    /**
    * 隐藏页面loading
    * */
    void baseHiddenPageLoading();

    /**
     * 显示提交loading
     * @param msg loading提示语
    * */
    void baseShowCommitLoading(String msg);

    /**
    * 隐藏页面loading
    * */
    void baseHiddenCommitLoading();

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      默认页面相关
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
     * 刷新默认页面状态
     * @param viewState 页面状态
     * */
    FCPageStateView baseRefreshPageState(@FCPageViewState int viewState);

    /**
     * 刷新默认页面状态
     * @param viewState 页面状态
     * @param msg       页面提示语
    * */
    FCPageStateView baseRefreshPageState(@FCPageViewState int viewState, String msg);

    /**
     * 刷新默认页面状态
     * @param viewState 页面状态
     * @param img       页面默认图
     * @param msg       页面提示语
     * */
    FCPageStateView baseRefreshPageState(@FCPageViewState int viewState,int img, String msg);

    /**
     * 刷新默认页面相对于顶部的偏移量
     * @param topOffset 相对于顶部的偏移量
    * */
    FCPageStateView baseRefreshPageStateTopOffset(int topOffset);

    /**
     * 刷新默认页面相对于顶部的偏移量
     * @param bottomOffset 相对于底部部的偏移量
     * */
    FCPageStateView baseRefreshPageStateBottomOffset(int bottomOffset);

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      统一回调（目前只处理失败）
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
    * 失败回调
    * */
    void baseShowError();

    /**
     * 失败回调
     * identifer 标识符，用来区分请求事件
     * */
    void baseShowError(String identifer);


}
